/*
 * Comunicador.h
 *
 *  PEREIRA, FERNANDO ROQUE
 *  91610
 *
 *  Entidad encargada del manejo del protocolo de comunicacion del sistema.
 *  Posee un socket desde el cual se envian y reciben los mensajes pertinentes.
 */

#ifndef COMUNICADOR_H_
#define COMUNICADOR_H_

#include "SocketCliente.h"
#include <queue>
#include <string>
#include <sstream>
#include "HMAC.h"
class Comunicador {
	std::string ClaveSimetrica;
	SocketCliente* socket;

	public:
		Comunicador();
		Comunicador(const int sockFd);
		virtual ~Comunicador();

		int enviarMensaje(std::string &message);
		int recibirMensaje(std::string& buffer);
		int conectar(int numeroPuerto, const char* ip);
		void cerrarComunicacion();
		unsigned int getSockPort(){return socket->getSockPort();}
		unsigned int getPeerPort(){return socket->getPeerPort();}
		void setClaveSimetrica(const std::string& SimK);
};

#endif
